#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;   //定义数据元素类型

typedef struct DuLNode{     //双向链表结点类型
    ElemType data;  //数据域
    struct DuLNode *prior,*next;//前驱指针和后继指针
}DuLNode,*DuLinkList;//双向链表类型

//创建一个带头结点的空双向链表
DuLinkList CreateList_Dul(){
    DuLinkList L = (DuLinkList)malloc(sizeof(DuLNode)); //创建头结点
    if (L == NULL){ //存储分配失败
        return NULL;//返回空指针
    }
    L->prior = L;//头结点的前驱指针指向自己
    L->next = L;//头结点的后继指针指向自己
    return L;//返回头结点指针
}

int main(){
    DuLinkList L = CreateList_Dul();//创建空双向链表
    printf("%p\n",L);//打印头结点地址
    printf("%p\n",L->prior);//打印头结点的前驱指针地址
    printf("%p\n",L->next);//打印头结点的后继指针地址
    return 0;
}